#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<string.h>
#include<stdlib.h>

int main(int argc,char *argv[])
{
    //C提供的
    printf("hello printf\n");
    fprintf(stdout,"hello fprintf\n");
    const char *s = "hello fputs\n";
    fputs(s,stdout);

    //OS提供的
    const char *ss = "hellow write\n";
    write(1,ss,strlen(ss));

    //fork();







    //if(argc != 2)
    //{
    //    return 2;
    //}

    //int fd = open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
    ////int fd = open("log.txt",O_WRONLY|O_CREAT|O_APPEND);
    //if(fd < 0)
    //{
    //    perror("open");
    //    return 1;
    //}
    //dup2(fd,1);
    //fprintf(stdout, "%s\n",argv[1]); // stdout -> 1 -> 显示器

    //close(fd);

    //close(1);
    //int fd = open("log.txt",O_WRONLY|O_TRUNC|O_CREAT);
    //if(fd < 0)
    //{
    //    perror("open");
    //    return 1;
    //}
    //fprintf(stdout,"you can see me, success\n");
    //return 0;

   // printf("fd:%d\n",fd);

   // char buffer[64];
   // fgets(buffer,sizeof buffer,stdin);
   // printf("%s\n",buffer);






//    close(1);
//    //这里的fd的分配规则是：最小的，没有被占用的文件描述符 
//    //0,1,2->close(1)->fd->1
//    int fd = open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//
//    //都应该是往显示器(标准输出)打印的
//    //但是下面的都写入(显示)到了log.txt文件中
//    //是为什么呢？输出重定向 
//
//    printf("fd:%d\n",fd);//stdout->FILE{fileno=1}->log.txt
//    printf("fd:%d\n",fd);
//    printf("fd:%d\n",fd);
//    printf("fd:%d\n",fd);
//    printf("fd:%d\n",fd);
//    printf("fd:%d\n",fd);
//    fprintf(stdout,"hello fprintf\n");
//    const char *s = "hello fwrite";
//    fwrite(s,strlen(s),1,stdout);
//
//    fflush(stdout);
//    //stdout->_fileno == 1;
//
//    //close(fd); //
//    return 0;
}
